import java.io.IOException;

/**
 * 随机读取对象接口定义
 *
 * @author near
 */
public interface IRandomObj
{

    /**
     * 获取关键数据
     *
     * @return
     */
    String getKeyWord();

    /**
     * 获取关键数据匹配规则
     *
     * @return
     */
    Enum getMatchPattern();

    /**
     * 获取关键数据替换结束符
     *
     * @return
     */
    String getFinishSign();

    /**
     * 将对象信息写入文件
     *
     * @param oraf
     * @throws IOException
     */
    void writeToFile(OptimizedRandomAccessFile oraf) throws IOException;

    /**
     * 替换指定位置后的一块内容
     *
     * @param oraf
     * @param needClose 是否需要关闭流
     * @throws IOException
     */
    boolean replaceBulk(OptimizedRandomAccessFile oraf, boolean needClose) throws Exception;

    /**
     * 替换指定行
     *
     * @param oraf
     * @param needClose 是否需要关闭流
     * @return
     * @throws Exception
     */
    boolean replaceOneLine(OptimizedRandomAccessFile oraf, boolean needClose) throws Exception;


    /**
     * 在指定字符下面插入内容
     * @param oraf
     * @param needClose
     * @return
     * @throws Exception
     */
    boolean insertBulk(OptimizedRandomAccessFile oraf, boolean needClose) throws Exception;

}
